﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using ReservaCancha.RegistroWS;
using System.Data;
using System.Collections;


namespace ReservaCancha.Controllers
{
    public class ClienteController : Controller
    {

        private List<Clientes> CrearClientes()
        {

            List<RegistroWS.Clientes> clientes = new List<RegistroWS.Clientes>();
            RegistroWS.RegistroServiceClient proxy = new RegistroWS.RegistroServiceClient();
            clientes = proxy.ListarClientes();
            return clientes;

        }
        private Clientes ObtenerCliente(int codigo)
        {

            List<Clientes> clientes = (List<Clientes>) Session["clientes"];
            RegistroWS.RegistroServiceClient proxy = new RegistroWS.RegistroServiceClient();
            Clientes model = proxy.ObtenerCliente(codigo);
            /*Clientes model = clientes.Single(delegate(Clientes cliente)
                                                {

                                                    if (cliente.Codigo == codigo) return true;
                                                    else return false;

                                                });*/
            return model;
        }


        //
        // GET: /Cliente/

        public ActionResult Index()
        {
            if (Session["clientes"] == null)
                Session["clientes"] = CrearClientes();
            List<Clientes> model = CrearClientes();
            Session["clientes"] = model;
            return View(model);
        }

        // 
        // GET: /Cliente/Details/5

        public ActionResult Details(int id)
        {
            /*Clientes model = ObtenerCliente(id);
            return View(model);*/
            Clientes model = ObtenerCliente(id);
            RegistroWS.RegistroServiceClient proxy = new RegistroWS.RegistroServiceClient();
            model = proxy.ObtenerCliente(id);
            return View(model);
        }

        //
        // GET: /Cliente/Create

        public ActionResult Create()
        {
            return View();
        } 

        //
        // POST: /Cliente/Create

        [HttpPost]
        public ActionResult Create(string nombre, string correo, string direccion, string telefono)
        {
            try
            {
                // TODO: Add insert logic here
                List<Clientes> clientes = (List<Clientes>) Session["clientes"];
                RegistroWS.RegistroServiceClient proxy = new RegistroWS.RegistroServiceClient();
                Clientes clienteaCrear = new Clientes();
                {
                    clienteaCrear.Nombre = nombre;
                    clienteaCrear.Correo = correo;
                    clienteaCrear.Direccion = direccion;
                    clienteaCrear.Telefono = telefono;
                    proxy.CrearCliente(nombre,correo,direccion,telefono);
                }

                return RedirectToAction("Index");
            }
            catch
            {
                return View();
            }
        }
        
        //
        // GET: /Cliente/Edit/5
 
        public ActionResult Edit(int id)
        {
            Clientes model = ObtenerCliente(id);
            RegistroWS.RegistroServiceClient proxy = new RegistroWS.RegistroServiceClient();
            model = proxy.ObtenerCliente(id);
            return View(model);
        }

        //
        // POST: /Cliente/Edit/5

        [HttpPost]
        public ActionResult Edit(int id, string nombre, string correo, string direccion, string telefono)
        {
            try
            {
                // TODO: Add update logic here
                Clientes model = ObtenerCliente(id);
                RegistroWS.RegistroServiceClient proxy = new RegistroWS.RegistroServiceClient();
                model = proxy.ObtenerCliente(id);
                model.Codigo = id;
                model.Nombre = nombre;
                model.Correo = correo;
                model.Direccion = direccion;
                model.Telefono = telefono;
                proxy.ModificarCliente(id,nombre,correo,direccion,telefono);
                return RedirectToAction("Index");
            }
            catch
            {
                return View();
            }
        }

        //
        // GET: /Cliente/Delete/5
 
        public ActionResult Delete(int id)
        {
            /*Clientes model = ObtenerCliente(id);
            return View(model);*/
            Clientes model = ObtenerCliente(id);
            RegistroWS.RegistroServiceClient proxy = new RegistroWS.RegistroServiceClient();
            model = proxy.ObtenerCliente(id);
            return View(model);
        }

        //
        // POST: /Cliente/Delete/5

        [HttpPost]
        public ActionResult Delete(int id, FormCollection collection)
        {
            try
            {
                // TODO: Add delete logic here
                List<Clientes> clientes = (List<Clientes>) Session["clientes"];
                RegistroWS.RegistroServiceClient proxy = new RegistroWS.RegistroServiceClient();
                proxy.EliminarCliente(id);
                //clientes.Remove(ObtenerCliente(id));
 
                return RedirectToAction("Index");
            }
            catch
            {
                return View();
            }
        }
    }
}
